<?php

namespace Ararat\ProductoBundle\Entity;
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;

/**
 * Description of Prototipo
 *
 * @author daniel
 * @ORM\Entity
 * 
 */
class Prototipo implements PrototipoInterface{
    
    /**
     *
     * @var integer
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;
    
    /**
     *
     * @var string
     * @ORM\Column(type="string")
     */
    protected $nombre;
    
    /**
     *
     * @var Collection 
     * @ORM\ManyToMany(targetEntity="Ararat\ProductoBundle\Entity\Propiedad")
     * @ORM\JoinTable(name="prototipo_propiedades",
     *               joinColumns={@ORM\JoinColumn(name="prototipo_id", referencedColumnName="id", nullable=false, unique=false)},
     *               inverseJoinColumns={@ORM\JoinColumn(name="propiedad_id",referencedColumnName="id", unique=true, nullable=false)})
     */
    protected $propiedades;
    
    /**
     *
     * @var \DateTime
     * @ORM\Column(type="datetime")
     * @Gedmo\Timestampable(on="create")
     */
    protected $creadoEl;

    /**
     *
     * @var \DateTime
     * @ORM\Column(type="datetime", nullable=true)
     * @Gedmo\Timestampable(on="update")
     */
    protected $actualizadoEl;
    
    /**
     * Constructor.
     */
    public function __construct(){
        $this->propiedades = new ArrayCollection();
        $this->creadoEl = new \DateTime();
    }
    
    public function getId(){
        return $this->id;
    }
    
    public function getNombre() {
        return $this->nombre;
    }

    public function setNombre($nombre) {
        $this->nombre = $nombre;
        return $this;
    }

    public function getPropiedades() {
        return $this->propiedades;
    }

    public function setPropiedades(Collection $propiedades) {
        $this->propiedades = $propiedades;
        return $this;
    }

    public function getCreadoEl() {
        return $this->creadoEl;
    }

    public function setCreadoEl(\DateTime $creadoEl) {
        $this->creadoEl = $creadoEl;
        return $this;
    }

    public function getActualizadoEl() {
        return $this->actualizadoEl;
    }

    public function setActualizadoEl(\DateTime $actualizadoEl) {
        $this->actualizadoEl = $actualizadoEl;
        return $this;
    }
    
    public function addPropiedad(PropiedadInterface $propiedad){
        if (!$this->hasPropiedad($propiedad)) {
            $this->propiedades->add($propiedad);
        }
        return $this;
    }
    
    public function removePropiedad(PropiedadInterface $propiedad) {
        if ($this->hasPropiedad($propiedad)) {
            $this->propiedades->removeElement($propiedad);
        }
        return $this;
    }
    
    public function hasPropiedad(PropiedadInterface $propiedad) {
        return $this->propiedades->contains($propiedad);
    }


}

?>
